package com.example.project.service;

import java.util.List;

import com.example.project.entity.IssueRelation;
import com.example.project.entity.JournalDetail;

/**
 * 变更详情，存储journal记录的详细变更信息Service接口
 * 
 * @author ruoyi
 * @date 2025-09-26
 */
public interface JournalDetailService {

	/**
	 * 查询变更详情，存储journal记录的详细变更信息
	 * 
	 * @param id 变更详情，存储journal记录的详细变更信息主键
	 * @return 变更详情，存储journal记录的详细变更信息
	 */
	public JournalDetail selectJournalDetailsById(Long id);

	/**
	 * 查询变更详情，存储journal记录的详细变更信息列表
	 * 
	 * @param tJournalDetails 变更详情，存储journal记录的详细变更信息
	 * @return 变更详情，存储journal记录的详细变更信息集合
	 */
	public List<JournalDetail> selectJournalDetailsList(JournalDetail tJournalDetails);

	/**
	 * 新增变更详情，存储journal记录的详细变更信息
	 * 
	 * @param tJournalDetails 变更详情，存储journal记录的详细变更信息
	 * @return 结果
	 */
	public int insertJournalDetails(JournalDetail tJournalDetails);

	/**
	 * 修改变更详情，存储journal记录的详细变更信息
	 * 
	 * @param tJournalDetails 变更详情，存储journal记录的详细变更信息
	 * @return 结果
	 */
	public int updateJournalDetails(JournalDetail tJournalDetails);

	/**
	 * 批量删除变更详情，存储journal记录的详细变更信息
	 * 
	 * @param ids 需要删除的变更详情，存储journal记录的详细变更信息主键集合
	 * @return 结果
	 */
	public int deleteJournalDetailsByIds(String ids);

	/**
	 * 删除变更详情，存储journal记录的详细变更信息信息
	 * 
	 * @param id 变更详情，存储journal记录的详细变更信息主键
	 * @return 结果
	 */
	public int deleteJournalDetailsById(Long id);

	public List<JournalDetail> findListByJournalId(long journalId);

	/**
	 * 返回单个日志详情的文本表示 对应 Ruby 的 show_detail 方法
	 */
	String showDetail(JournalDetail detail);

	public JournalDetail queryByIssueIdAndPropKey(Long issueId, String string, Long authorId);

	public void createRelationDetails(Long id, IssueRelation issueRelation);

	/**
	 * 创建删除关联关系的详细记录
	 * 
	 * @param journalId Journal记录ID
	 * @param issueRelation 关联关系
	 */
	public void createDeleteRelationDetails(Long journalId, IssueRelation issueRelation);
}
